package com.maybach.core.ao;

import com.maybach.common.BizResult;
import com.maybach.util.query.support.PageResult;
import com.maybach.common.model.PartnerDO;
import com.maybach.core.form.partner.PartnerForm;
import com.maybach.core.form.partner.PartnerQueryForm;

/**
 * Created by houenxun on 16/1/18.
 */
public interface PartnerAO {
    /**
     * 添加合作伙伴（供应商 或者分销商）
     *
     * @param partnerForm
     * @return
     */
    Long addPartner(PartnerForm partnerForm);

    /**
     * 更新合作伙伴
     *
     * @param partnerForm
     * @return
     */
    boolean updatePartner(PartnerForm partnerForm);

    /**
     * 是否已存在
     *
     * @param certificateCode
     * @return
     */
    Boolean isPartnerExist(String certificateCode);

    /**
     * 除了id 是否有另一个公司存在
     *
     * @param certificateCode
     * @param id
     * @return
     */
    Boolean isAnotherPartnerExist(String certificateCode, Long id);

    /**
     * 根据组织机构代码证 获取partner
     *
     * @param code
     * @return
     */
    PartnerDO getPartnerByCertificateCode(String code);

    /**
     * 根据主键获取Partner
     *
     * @param id
     * @return
     */
    PartnerDO getPartner(Long id);


    PartnerForm getPartnerForm(Long id);

    /**
     * 分页查询partner
     *
     * @param query
     * @return
     */
    PageResult<PartnerDO> queryPartner(PartnerQueryForm query);

    /**
     * 更新状态
     *
     * @param id
     * @param status
     * @return
     */
    BizResult updatePartnerStatus(Long id, Integer status);

}
